Added more commands and options
authorcritiqjo <john.ch.fr@gmail.com>
Tue, 14 Apr 2015 18:18:22 +0000 (23:48 +0530)
committercritiqjo <john.ch.fr@gmail.com>
Tue, 14 Apr 2015 18:18:22 +0000 (23:48 +0530)
cargo-completion [deleted file]
src/etc/cargo.bashcomp.sh

diff --git a/cargo-completion b/cargo-completion
deleted file mode 100644 (file)
index 5cc396b..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-
-_cargo()
-{
-       local cur prev words cword
-       _init_completion || return
-
-       COMPREPLY=()
-
-       local cmd=${words[1]}
-
-       #commands='bench build clean doc new package run search test update version'
-       #commands+='fetch generate-lockfile git-checkout locate-project login owner pkgid publish read-manifest verify-project yank'
-       opt_common='-h --help -v --verbose'
-       opt_pkg='-p --package'
-       opt_feat='--features --no-default-features'
-       opt_mani='--manifest-path'
-       declare -A opts
-       opts[_nocmd]="$opt_common -V --version --list"
-       opts[bench]="$opt_common $opt_pkg $opt_feat $opt_mani --target --bench --no-run -j --jobs"
-       opts[build]="$opt_common $opt_pkg $opt_feat $opt_mani --target -j --jobs --lib --release"
-       opts[clean]="$opt_common $opt_pkg $opt_mani --target"
-       opts[doc]="$opt_common $opt_pkg $opt_feat $opt_mani --target --open --no-deps -j --jobs"
-       opts[new]="$opt_common --vcs --bin"
-       opts[run]="$opt_common $opt_feat $opt_mani --target --bin --example -j --jobs --release"
-       opts[test]="$opt_common $opt_pkg $opt_feat $opt_mani --target --test --bin --no-run -j --jobs"
-       opts[update]="$opt_common $opt_pkg $opt_mani --aggressive --precise"
-       opts[package]="$opt_common $opt_mani -l --list --no-verify --no-metadata"
-       opts[version]="$opt_common"
-
-       if [[ $cword -eq 1 ]]; then
-               if [[ "$cur" == -* ]]; then
-                       COMPREPLY=( $( compgen -W "${opts[_nocmd]}" -- "$cur" ) )
-               else
-                       COMPREPLY=( $( compgen -W "$(cargo --list | tail -n +2)" -- "$cur" ) )
-               fi
-       elif [[ $cword -gt 2 && "$prev" = "$opt_mani" ]]; then
-               _filedir
-       elif [[ "$cur" == -* ]]; then
-               COMPREPLY=( $( compgen -W "${opts[$cmd]}" -- "$cur" ) )
-       fi
-
-       return 0
-} &&
-complete -F _cargo cargo
-
-# vim:ft=sh
index bf1e6894373fe8b2cd72bd68ef65746375c99fe9..f4b6d6ec3dfff4dacfa22af36cd0d397ef0762ae 100644 (file)
-have cargo &&
-_cargo() {
-    local commands split=false
-    local cur cmd
-
-    COMPREPLY=()
-    cur=$(_get_cword "=")
-    cmd="${COMP_WORDS[1]}"
-
-    _expand || return 0
-
-    commands=$(cargo --list|grep -v 'Installed Commands:')
-
-    # these options require an argument
-    if [[ "${cmd}" == -@(A|B|C|G|g|m) ]] ; then
-        return 0
-    fi
-
-    _split_longopt && split=true
-
-    case "${cmd}" in
-        bench|test)
-            COMPREPLY=( $(compgen -W \
-                "--features --help --jobs --manifest-path --no-default-features \
-                 --no-run --package --target --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        build)
-            COMPREPLY=( $(compgen -W \
-                "--features --help --jobs --manifest-path --no-default-features \
-                 --package --release --target --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        clean)
-            COMPREPLY=( $(compgen -W \
-                "--help --manifest-path --package --target --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        config-for-key)
-            COMPREPLY=( $(compgen -W \
-                "--help --human --key=" \
-                 -- "${cur}") )
-            return 0;;
-        config-for-key)
-            COMPREPLY=( $(compgen -W \
-                "--help --human" \
-                 -- "${cur}") )
-            return 0;;
-        doc)
-            COMPREPLY=( $(compgen -W \
-                "--features --help --jobs --manifest-path --no-default-features \
-                 --no-deps --open --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        fetch|generate-lockfile|package|pkgid|read-manifest|verify-project)
-            COMPREPLY=( $(compgen -W \
-                "--help --manifest-path --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        git-checkout)
-            COMPREPLY=( $(compgen -W \
-                "--help --reference= --url= --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        locate-project)
-            COMPREPLY=( $(compgen -W \
-                "--help --host --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        new)
-            COMPREPLY=( $(compgen -W \
-                "--bin --git --help --hg --no-git --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        run)
-            COMPREPLY=( $(compgen -W \
-                "--features --help --jobs --manifest-path --no-default-features \
-                 --release --target --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        update)
-            COMPREPLY=( $(compgen -W \
-                "--aggressive --help --manifest-path --package --precise --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        upload)
-            COMPREPLY=( $(compgen -W \
-                "--help --host --manifest-path --token --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        version)
-            COMPREPLY=( $(compgen -W \
-                "--help --verbose" \
-                 -- "${cur}") )
-            return 0;;
-        help)
-            return 0;;
-    esac
-
-    $split && return 0
-
-    if [ ${COMP_CWORD} -eq 1 ]; then
-        COMPREPLY=( $(compgen -W \
-            "${commands} --help --list --verbose --version" -- "${cur}") )
-        return 0
-    fi
-    _filedir
+command -v cargo >/dev/null 2>&1 &&
+_cargo()
+{
+       local cur prev words cword cmd commands
+       _init_completion || return
+
+       COMPREPLY=()
+
+       cmd=${words[1]}
+
+       commands=$(cargo --list | tail -n +2)
+
+       opt_common='-h --help -v --verbose'
+       opt_pkg='-p --package'
+       opt_feat='--features --no-default-features'
+       opt_mani='--manifest-path'
+
+       declare -A opts
+       opts[_nocmd]="$opt_common -V --version --list"
+       opts[bench]="$opt_common $opt_pkg $opt_feat $opt_mani --target --bench --no-run -j --jobs"
+       opts[build]="$opt_common $opt_pkg $opt_feat $opt_mani --target -j --jobs --lib --release"
+       opts[clean]="$opt_common $opt_pkg $opt_mani --target"
+       opts[doc]="$opt_common $opt_pkg $opt_feat $opt_mani --target --open --no-deps -j --jobs"
+       opts[fetch]="$opt_common $opt_mani"
+       opts[generate-lockfile]="${opts[fetch]}"
+       opts[git-checkout]="$opt_common --reference= --url="
+       opts[locate-project]="${opts[fetch]}"
+       opts[login]="$opt_common --host"
+       opts[new]="$opt_common --vcs --bin"
+       opts[owner]="$opt_common -a --add -r --remove -l --list --index --token"
+       opts[pkgid]="${opts[fetch]}"
+       opts[publish]="$opt_common $opt_mani --host --token --no-verify"
+       opts[read-manifest]="${opts[fetch]}"
+       opts[run]="$opt_common $opt_feat $opt_mani --target --bin --example -j --jobs --release"
+       opts[test]="$opt_common $opt_pkg $opt_feat $opt_mani --target --test --bin --no-run -j --jobs"
+       opts[update]="$opt_common $opt_pkg $opt_mani --aggressive --precise"
+       opts[package]="$opt_common $opt_mani -l --list --no-verify --no-metadata"
+       opts[verify-project]="${opts[fetch]}"
+       opts[version]="$opt_common"
+       opts[yank]="$opt_common --vers --undo --index --token"
+
+       if [[ $cword -eq 1 ]]; then
+               if [[ "$cur" == -* ]]; then
+                       COMPREPLY=( $( compgen -W "${opts[_nocmd]}" -- "$cur" ) )
+               else
+                       COMPREPLY=( $( compgen -W "$commands" -- "$cur" ) )
+               fi
+       elif [[ $cword -gt 2 && "$prev" = "$opt_mani" ]]; then
+               _filedir
+       elif [[ "$cur" == -* ]]; then
+               COMPREPLY=( $( compgen -W "${opts[$cmd]}" -- "$cur" ) )
+       fi
+
+       if [[ ${#COMPREPLY[@]} == 1 && ${COMPREPLY[0]} != "--"*"=" ]] ; then
+               compopt +o nospace
+       fi
+       return 0
 } &&
-complete -F _cargo ${nospace} cargo
+complete -o nospace -F _cargo cargo
+
+# vim:ft=sh